package br.com.ucb.invista.controller;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.ucb.invista.dao.MovimentoFinanceiroDao;
import br.com.ucb.invista.domain.MovimentoFinanceiro;
import br.com.ucb.invista.enumeration.TipoFormaLancamento;
import br.com.ucb.invista.utils.Constantes;

@ManagedBean(name = "movimentoFinanceiroController")
@SessionScoped
public class MovimentoFinanceiroController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private MovimentoFinanceiro movimentoFinanceiro;
	private MovimentoFinanceiroDao movimentoFinanceiroDao;
	
	public MovimentoFinanceiroController() {
		this.movimentoFinanceiro = new MovimentoFinanceiro();	
		this.movimentoFinanceiroDao = new MovimentoFinanceiroDao();
	}
	
	public String novo() {
		return Constantes.paginaMovimentoFinanceiroCadastrarAlterar;
	}
	
	public String cancelar() {
		return Constantes.paginaMovimentoFinanceiroListar;
	}
	
	public void limparCampos() {
		this.movimentoFinanceiro = new MovimentoFinanceiro();
		this.movimentoFinanceiroDao = new MovimentoFinanceiroDao();
	}
	
	public List<TipoFormaLancamento> listarTipoFormaPagamento() {
		return Arrays.asList(TipoFormaLancamento.values());
	}
	
	public String salvar() {
		this.movimentoFinanceiroDao.salvar(movimentoFinanceiro);
			this.limparCampos();
				return Constantes.paginaMovimentoFinanceiroCadastrarAlterar;
	}
	
	public String alterar(MovimentoFinanceiro movimentoFinanceiro) {
		this.movimentoFinanceiro = movimentoFinanceiro;
		this.movimentoFinanceiroDao.alterar(movimentoFinanceiro);
		return Constantes.paginaMovimentoFinanceiroCadastrarAlterar;
	}
	
	public String excluir(MovimentoFinanceiro movimentoFinanceiro) {
		this.movimentoFinanceiro = movimentoFinanceiro;
		this.movimentoFinanceiroDao.excluir(this.movimentoFinanceiro);
			return Constantes.paginaMovimentoFinanceiroListar;
	}
	
	public String abrirPaginaMovimentoFinanceiroCadastrarAlterar() {
		return Constantes.paginaMovimentoFinanceiroCadastrarAlterar;
	}
	
	public MovimentoFinanceiro getMovimentoFinanceiro() {
		return movimentoFinanceiro;
	}

	public void setMovimentoFinanceiro(MovimentoFinanceiro movimentoFinanceiro) {
		this.movimentoFinanceiro = movimentoFinanceiro;
	}

	public MovimentoFinanceiroDao getMovimentoFinanceiroDao() {
		return movimentoFinanceiroDao;
	}

	public void setMovimentoFinanceiroDao(MovimentoFinanceiroDao movimentoFinanceiroDao) {
		this.movimentoFinanceiroDao = movimentoFinanceiroDao;
	}
}
